DataGrids void Main() { var password = "hepxcrrq"; password = FindNextPassword(password); password.Dump(); password = FindNextPassword(password); password.Dump(); } // Define other methods and classes here public Regex Incrementing = new Regex("(abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz)"); public Regex Forbidden = new Regex("[iol]"); public string FindNextPassword(string currentPassword) { do { currentPassword = Increment(currentPassword); } while (Forbidden.IsMatch(currentPassword) || !Incrementing.IsMatch(currentPassword) || !HasRepeatingPairs(currentPassword)); return currentPassword; } public bool HasRepeatingPairs(string input) { var Repeats = new List(); for (var i = 0; i < input.Length - 1; i++) { if (input[i] == input[i+1]) Repeats.Add(input[i]); } return Repeats.Distinct().Count() >= 2; } public string Increment(string input) { var chars = input.ToCharArray(); for (var i = 1; i <= chars.Length; i++) { if (chars[chars.Length-i] == 'z') { chars[chars.Length-i] = 'a'; continue; } chars[chars.Length-i]++; break; } return new string(chars); }